package com.hbase.common.utils;

import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Properties;
import java.util.Set;

/**
 * 
 * @todoTODO
 *  把properties中的值添加到全局的map对象中
 * @author cjy
 * @date2016-10-12
 */
public class PropertyToMap {
	
	private static Map<String, String> map = null;

	static {
	    //TODO 把拦截器的配置文件添加到map中，有需要的可以在下面后缀其它的配置文件
	    loadFileToMap("interceptor.properties");
	}
	/**
	 * 加载指定的properties配置文件到全局的map对象中
	 * @param filePath
	 */
    private static void loadFileToMap(String filePath) {
        //判断map是否为空
        if (null == map) {
            //当map为空时初始化map对象
            map = new HashMap<String, String>();
        }
        if (null == filePath || "".equals(filePath.trim())) {
            System.out.println("The file path is null,return");
            return;
        }
        filePath = filePath.trim();
        // 获取资源文件
        InputStream is = PropertyToMap.class.getClassLoader().getResourceAsStream(filePath);
        // 属性列表
        Properties prop = new Properties();
        try {
            // 从输入流中读取属性列表
            prop.load(is);
            // 返回Properties中包含的key-value的Set视图
            Set<Entry<Object, Object>> set = prop.entrySet();
            // 返回在此Set中的元素上进行迭代的迭代器
            Iterator<Map.Entry<Object, Object>> it = set.iterator();
            // 循环取出key-value
            while (it.hasNext()) {
                Entry<Object, Object> entry = it.next();
                //获取properties的key
                String key = entry.getKey().toString();
                //获取properties的value
                String value = entry.getValue() == null ? "" : entry.getValue().toString();
                //把遍历的properties的数据添加到map对象中
                map.put(key, value);
            }
        } catch (IOException e) {
            System.out.println("load file faile." + e);
            return;
        }

    } 
	
    /**
     * 根据传递的key获取map中的值
     * @param key
     *  文件中的key
     * @return
     *  key对应的结果
     */
    public static String getValue(String key) {
        if (null == map) {
            System.out.println("map is null!");
            return null;
        } 
        return map.get(key);
    }
}
